const { body, validationResult } = require('express-validator');

exports.addMovieValidator = [
    body('title')
        .notEmpty().withMessage('title字段不能为空')
        .isLength({ min: 2, max: 255 }).withMessage('title字段长度必须在2-255之间'),
    body('year')
        .notEmpty().withMessage('year字段不能为空')
        .isInt({ min: 1900, max: 2099 }).withMessage('year字段必须为1900-2099之间的整数'),
    body('director')
        .notEmpty().withMessage('director字段不能为空')
        .isLength({ min: 1, max: 255 }).withMessage('director字段长度必须在1-255之间'),
    body('genre')
        .notEmpty().withMessage('genre字段不能为空')
        .isLength({ min: 1, max: 255 }).withMessage('genre字段长度必须在1-255之间'),
    body('rating')
        .notEmpty().withMessage('rating字段不能为空')
        .isFloat({ min: 0, max: 10 }).withMessage('rating字段必须为0-10之间的浮点数'),
    body('downloadUrl')
        .notEmpty().withMessage('downloadUrl字段不能为空')
        .isURL().withMessage('downloadUrl字段必须为有效的URL')
        .isLength({ max: 255 }).withMessage('downloadUrl字段长度不能超过255'),

    body('imgUrl')
        .notEmpty().withMessage('imgUrl字段不能为空')
        .isURL().withMessage('imgUrl字段必须为有效的URL'),
    body('description')
        .notEmpty().withMessage('description字段不能为空')
        .isLength({max: 1024}).withMessage('description字段长度不能超过1024')
];

exports.updateMovieValidator = [
    body('id')
        .notEmpty().withMessage('id字段不能为空')
        .isMongoId().withMessage('id字段必须为有效的ObjectId'),
    body('title').optional()
        .notEmpty().withMessage('title字段不能为空')
        .isLength({ min: 2, max: 255 }).withMessage('title字段长度必须在2-255之间'),
    body('year').optional()
        .notEmpty().withMessage('year字段不能为空')
        .isInt({ min: 1900, max: 2099 }).withMessage('year字段必须为1900-2099之间的整数'),
    body('director').optional()
        .notEmpty().withMessage('director字段不能为空')
        .isLength({ min: 1, max: 255 }).withMessage('director字段长度必须在1-255之间'),
    body('genre').optional()
        .notEmpty().withMessage('genre字段不能为空')
        .isLength({ min: 1, max: 255 }).withMessage('genre字段长度必须在1-255之间'),
    body('rating').optional()
        .notEmpty().withMessage('rating字段不能为空')
        .isFloat({ min: 0, max: 10 }).withMessage('rating字段必须为0-10之间的浮点数'),
    body('downloadUrl').optional()
        .notEmpty().withMessage('downloadUrl字段不能为空')
        .isURL().withMessage('downloadUrl字段必须为有效的URL')
        .isLength({ max: 255 }).withMessage('downloadUrl字段长度不能超过255字节'),
    body('imgUrl')
        .notEmpty().withMessage('imgUrl字段不能为空')
        .isURL().withMessage('imgUrl字段必须为有效的URL'),
    body('description')
        .notEmpty().withMessage('description字段不能为空')
        .isLength({max: 1024}).withMessage('description字段长度不能超过1024')
];
